package com.myapp.struts.personal;

import hibernate.Clientes;
import hibernate.ClientesDAO;
import hibernate.Cuentas;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

public class BuscarClienteAction extends org.apache.struts.action.Action {

    private static final String FAILURE = "failure";
    private static final String CLIENTES = "clientes";
    private static final String CUENTAS = "cuentas";
    private static final String TARJETAS = "tarjetas";
    private static final String OPERAR = "operar";
    private static final String SEGUROS = "seguros";
    private static final String PRESTAMOS = "prestamos";

    @Override
    public ActionForward execute(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {

        BuscarClienteForm f = (BuscarClienteForm) form;
        
        ClientesDAO dao = new ClientesDAO();

        Clientes cliente = dao.get(f.getDni());
        String opcion = f.getOpcion();

        if (cliente == null) {
            request.setAttribute("msg", "El cliente buscado no existe en nuestra BD");
            return mapping.findForward(FAILURE);

        } else {
            if (opcion.equals("clientes")) {
                request.setAttribute("clienteBuscado", cliente);
                return mapping.findForward(CLIENTES);
            }else if(opcion.equals("cuentas")){               
                HttpSession session = request.getSession();
                session.setAttribute("cliente", cliente);
                return mapping.findForward(CUENTAS);
            } else {
                List<Cuentas> cuentasDelCliente = dao.getCuentasDelCliente(cliente);

                HttpSession session = request.getSession();
                session.setAttribute("cliente", cliente);
                session.setAttribute("cuentas", cuentasDelCliente);
                
                switch (opcion) {
                    case "cuentas":
                        return mapping.findForward(CUENTAS);
                    case "tarjetas":
                        return mapping.findForward(TARJETAS);
                    case "operar":
                        return mapping.findForward(OPERAR);
                    case "seguros":
                        return mapping.findForward(SEGUROS);
                    case "prestamos":
                        return mapping.findForward(PRESTAMOS);
                    default:
                        return mapping.findForward(FAILURE);
                }
            }
        }
    }
}
